﻿#region license
//
// Copyright (c) 2012, Siy Williams (siy.williams@gmail.com)
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted 
// provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this list of conditions
// and the following disclaimer. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the documentation and/or other 
// materials provided with the distribution. Neither the name of the organization nor the names 
// of its contributors may be used to endorse or promote products derived from this software without 
// specific prior written permission. 
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using FluentCommandLineParser.Internals;
using Machine.Specifications;

namespace FluentCommandLineParser.Tests
{
    namespace CommandLineParserEngineTests
    {
        [Subject(typeof(CommandLineParserEngine), "CommandLineParserEngine")]
        public abstract class CommandLineParserEngineTestContext
        {
            protected static Exception error;
            protected static IEnumerable<KeyValuePair<string, string>> results;
            protected static string[] args;
            protected static CommandLineParserEngine sut;

            Establish context = () => sut = new CommandLineParserEngine();

            protected static void RunParserWith(string[] args)
            {
                error  = Catch.Exception(() => results = sut.Parse(args).ToList());
            }
        }
    }
}